{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/kellydingzx/ecg_notebooks/blob/main/hamilton.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Import"
      ],
      "metadata": {
        "id": "1_wWyrk3umjX"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "aNHsJaNSs43V"
      },
      "outputs": [],
      "source": [
        "! wget -r -N -c -np https://physionet.org/files/nsrdb/1.0.0/\n",
        "! pip install wfdb\n",
        "! pip install scipy"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "VHNDeMIOs1vo"
      },
      "outputs": [],
      "source": [
        "import pip\n",
        "import os\n",
        "\n",
        "try:\n",
        "    import wfdb\n",
        "except ModuleNotFoundError:\n",
        "    pip.main(['install', \"wfdb\"])\n",
        "    import wfdb\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "id": "BG4V3Cjhs1vp"
      },
      "outputs": [],
      "source": [
        "import sys\n",
        "\n",
        "sys.path.append( '../src' )\n",
        "import readin\n",
        "import display\n",
        "# import algorithms.hamilton"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "id": "TvM6AcORs1vp"
      },
      "outputs": [],
      "source": [
        "def evaluation(peaks, real_peaks, interval):\n",
        "    check_peaks = real_peaks[1:]\n",
        "    n_ref = len(check_peaks)\n",
        "    n_detected = len(peaks)\n",
        "    count = 0\n",
        "    checked_ind = 0\n",
        "    for i in range(n_detected):\n",
        "      det_peak = peaks[i]\n",
        "      for j in range(checked_ind, n_ref):\n",
        "          correct = check_peaks[j]\n",
        "          if det_peak > correct -interval and det_peak < correct +interval:\n",
        "              count +=1\n",
        "              checked_ind += 1\n",
        "              break\n",
        "\n",
        "    sensitivity = count/n_ref\n",
        "    ppv = count/n_detected\n",
        "    f1 = 2*ppv*sensitivity/(ppv+sensitivity)\n",
        "    result = {\"sensitivity\": str(sensitivity*100)+'%',\n",
        "              'PPV': str(ppv*100)+'%',\n",
        "              'F1': str(f1*100) + '%'\n",
        "              }\n",
        "    return result"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Example"
      ],
      "metadata": {
        "id": "AJ_edrtbvSti"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "4pxgK7Ozs1vp"
      },
      "outputs": [],
      "source": [
        "example_path = '/content/physionet.org/files/nsrdb/1.0.0/16265'\n",
        "leads = ['ECG2']\n",
        "fs=128\n",
        "\n",
        "n_samples = 30*60*fs\n",
        "raw_samples, real_peaks= readin.get_data(example_path, leads, 0, n_samples)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "c4QlwwQSs1vq",
        "outputId": "e808e551-db28-4865-c9bf-869c883fae57"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{'sensitivity': '100.0%',\n",
              " 'PPV': '89.95089549501823%',\n",
              " 'F1': '94.709630360629%'}"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "det_peaks = hamilton_detector(raw_samples, fs)\n",
        "evaluation(det_peaks, real_peaks, 150*(1000/128))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "metadata": {
        "id": "OFawihaes1vq"
      },
      "outputs": [],
      "source": [
        "import os\n",
        "arr = os.listdir('/content/physionet.org/files/nsrdb/1.0.0')\n",
        "\n",
        "sample_ids = []\n",
        "for file in arr:\n",
        "    if '.atr' in file:\n",
        "        sample_ids.append(file[:5])\n",
        "        \n",
        "root_folder = '/content/physionet.org/files/nsrdb/1.0.0'\n",
        "sensitivity = []\n",
        "ppv = []\n",
        "f1 = []"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "! pip install neurokit2\n",
        "import neurokit2 as nk2"
      ],
      "metadata": {
        "id": "p7vpaU5PZtc1"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def get_peaks(sample_path, leads, fs):\n",
        "    signal, rest = wfdb.rdsamp(sample_path, sampfrom=0, sampto=None, \n",
        "                                channel_names = leads)\n",
        "    cleaned = nk2.ecg_clean(signal, fs, method='hamilton2002')\n",
        "    signals, info = nk2.ecg_peaks(cleaned, fs, method='hamilton2002')\n",
        "\n",
        "    return info[\"ECG_R_Peaks\"]"
      ],
      "metadata": {
        "id": "TZIoNnltZWpY"
      },
      "execution_count": 24,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "npjKoVvms1vq",
        "outputId": "8976de05-9473-463b-d359-9319f9fb747a"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "hi\n",
            "{'sensitivity': '99.6970309028479%', 'PPV': '19.36654601810709%', 'F1': '32.43287639729616%'}\n",
            "hi\n",
            "{'sensitivity': '99.5884113748129%', 'PPV': '18.676945285402088%', 'F1': '31.454812513717478%'}\n",
            "hi\n",
            "{'sensitivity': '98.985153166698%', 'PPV': '23.85287031501911%', 'F1': '38.442168876951484%'}\n",
            "hi\n",
            "{'sensitivity': '99.38723730192925%', 'PPV': '20.621188343034227%', 'F1': '34.155650793389654%'}\n"
          ]
        }
      ],
      "source": [
        "for id in sample_ids:\n",
        "    sample_path = '/content/physionet.org/files/nsrdb/1.0.0/' + id\n",
        "    leads = ['ECG2']\n",
        "    fs=128\n",
        "    n_samples = 4*60*60*fs\n",
        "    raw_samples, real_peaks= readin.get_data(sample_path, leads, 0, n_samples)\n",
        "    peaks = get_peaks(sample_path, leads, fs)\n",
        "    # hamilton_detector(raw_samples, 128)\n",
        "    print('hi')\n",
        "    res = evaluation(peaks, real_peaks, int(150/(1000/128)))\n",
        "    sensitivity.append(res['sensitivity'])\n",
        "    ppv.append(res['PPV'])\n",
        "    f1.append(res['F1'])\n",
        "    print(res)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "id": "5BYRpHUOLWDD",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 353
        },
        "outputId": "986e19fd-45d9-44c5-9b70-c6baf371d9f6"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7f5ce577fe20>"
            ]
          },
          "metadata": {},
          "execution_count": 17
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1080x360 with 1 Axes>"
            ],
            "image/png": "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ij0REREREan+PnkGxvwYpj0ed5KsoWJPRERERESqv55nQcf+8Mqv4ZtFcafJCir2RERERESk+svJgdMfBMuB5y+G4qK4E1V7KvZERERERCQ7NG4P374DFr8H794bd5pqLy/uACIiIiIiIknr+X1Y+Sl0OinuJNWeij0REREREckeZjDwxl2v3YNusgcdxikiIiIiItmnuBjGjoTXr4s7SbWlYk9ERERERLJPTg7k5MF798PCt+JOUy2p2BMRERERkew08EZo2gVeuAS2rI07TbWjYk9ERERERLJTrXpwxmjYsBxeuTruNNWOij0REREREclebY+AE66GOeNg7eK401QruhqniIiIiIhkt/5XQK8fBPfhk520Z09ERERERLJbbn5Q6LnDZ68Ef0XFnoiIiIiI1BBzX4Mnz4KPHo47SbWgYk9ERERERGqGbqdCl4Hw+u9g1dy408QulmLPzBaZ2SdmNs3MJofdmpjZG2Y2L/y7XxzZREREREQkS5nBsPshvwCevwiKCuNOFKs49+yd5O693L1P+PoaYLy7dwXGh69FRERERESS16AVDPkzfDkVJt4Rd5pYVafDOIcBj4XPHwNOjzGLiIiIiIhkq4OHQb/LoE2fvQ9bg8V16wUHXjczB/7q7qOBlu6+POy/AmgZUzYREREREcl2p/5h13P34BDPfUxcxd5x7r7MzFoAb5jZnMSe7u5hIbgHM7sIuAigfXvdR0NERERERCrw1h2waSV8e987pDOWwzjdfVn4dyXwPHAk8JWZtQYI/64s572j3b2Pu/dp3rx5piKLiIiIiEg22rYePhwd3JZhH5PxYs/M6plZg5LnwCBgJvAScH442PnAi5nOJiIiIiIiNczJ10GLQ+DFy2DT6rjTZFQce/ZaAu+Y2XTgQ2Ccu78K3AoMNLN5wCnhaxERERERkcrLqw1njoata2HsyOD8vX1Exs/Zc/eFwGFldF8DDMh0HhERERERqeFa9YCTfwdvjoKvZkKrQ+NOlBFxXaBFREREREQkc/pdCl1OgZYHx50kY6rTffZERERERESikZO7q9D74j0oLoo3Twao2BMRERERkX3Hko/g76fBu/fFnSRyKvZERERERGTf0bYPHDQU/nMzrPgk7jSRUrEnIiIiIiL7DjP4zp+hbhMYcxEUbo07UWRU7ImIiIiIyL6lXlMY9gCs/BT+c1Pc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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "source": [
        "def to_float(arr):\n",
        "    ret = []\n",
        "    for x in arr:\n",
        "        ret.append(float(x[0:-1]))\n",
        "    return ret \n",
        "plt.figure(figsize=(15,5))\n",
        "plt.xlabel('Sample ID')\n",
        "plt.ylabel('Percentage')\n",
        "\n",
        "plt.plot(sample_ids, to_float(sensitivity), label='Sensitivity', marker='o', linestyle='--')\n",
        "plt.plot(sample_ids, to_float(ppv), label='PPV', marker='o', linestyle='--')\n",
        "plt.plot(sample_ids, to_float(f1), label='F1', marker='o', linestyle='--')\n",
        "\n",
        "plt.legend()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "metadata": {
        "id": "GU7uVEruLgwo",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "bc43c609-0de5-4caa-9165-effa7fd591a5"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(90.90472143270864, 81.16738024455314, 85.19166149703122)"
            ]
          },
          "metadata": {},
          "execution_count": 18
        }
      ],
      "source": [
        "np.average(to_float(sensitivity)), np.average(to_float(ppv)), np.average(to_float(f1))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DSgbTGoQGs_v"
      },
      "source": [
        "## Algorithm"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "id": "eJLDoZjps1vq"
      },
      "outputs": [],
      "source": [
        "import pip\n",
        "\n",
        "try:\n",
        "    import wfdb\n",
        "except ModuleNotFoundError:\n",
        "    pip.main(['install', \"wfdb\"])\n",
        "    import wfdb\n",
        "\n",
        "import numpy as np\n",
        "from scipy import signal, ndimage\n",
        "\n",
        "def hamilton_detector(unfiltered_ecg, sampling_freq):\n",
        "\n",
        "    filtered_ecg = bandpass_ecg(unfiltered_ecg, 5, 11, sampling_freq)\n",
        "    diff = differentiated_ecg(unfiltered_ecg, sampling_freq)\n",
        "    averaged = time_averaged_ecg(unfiltered_ecg, sampling_freq)\n",
        "    \n",
        "    n_pks = []\n",
        "    n_pks_ave = 0.0\n",
        "    s_pks = []\n",
        "    s_pks_ave = 0.0\n",
        "    QRS = [0]\n",
        "    RR = []\n",
        "    RR_ave = 0.0\n",
        "\n",
        "    th = 0.0\n",
        "\n",
        "    i=0\n",
        "    idx = []\n",
        "    peaks = []  \n",
        "\n",
        "    for i in range(1, len(averaged)-1):\n",
        "\n",
        "        if averaged[i-1]<averaged[i] and averaged[i+1]<averaged[i]:\n",
        "            peak = i\n",
        "            peaks.append(i)\n",
        "\n",
        "            if averaged[peak] > th and (peak-QRS[-1])>0.3*sampling_freq:        \n",
        "                QRS.append(peak)\n",
        "                idx.append(i)\n",
        "                s_pks.append(averaged[peak])\n",
        "                if len(n_pks)>8:\n",
        "                    s_pks.pop(0)\n",
        "                s_pks_ave = np.mean(s_pks)\n",
        "\n",
        "                if RR_ave != 0.0:\n",
        "                    if QRS[-1]-QRS[-2] > 1.5*RR_ave:\n",
        "                        missed_peaks = peaks[QRS[-1]:QRS[-2]]\n",
        "                        for missed_peak in missed_peaks:\n",
        "                            if averaged[missed_peak]>0.3*th:\n",
        "                                if (missed_peak-peaks[QRS[-2]]< 0.2*sampling_freq and missed_peak-peaks[QRS[-2]] >0.36*sampling_freq) or diff[missed_peak] > 0.5*diff[QRS[-2]]:\n",
        "                                    QRS.append(missed_peak)\n",
        "                                    QRS.sort()\n",
        "                                    break\n",
        "\n",
        "                if len(QRS)>2:\n",
        "                    RR.append(QRS[-1]-QRS[-2])\n",
        "                    if len(RR)>8:\n",
        "                        RR.pop(0)\n",
        "                    RR_ave = int(np.median(RR))\n",
        "\n",
        "            else:\n",
        "                n_pks.append(averaged[peak])\n",
        "                if len(n_pks)>8:\n",
        "                    n_pks.pop(0)\n",
        "                n_pks_ave = np.mean(n_pks)\n",
        "\n",
        "            th = n_pks_ave + 0.189*(n_pks_ave-s_pks_ave)\n",
        "\n",
        "\n",
        "    QRS.pop(0)\n",
        "\n",
        "    return QRS\n",
        "\n",
        "def differentiated_ecg(input_signal, sampling_freq):\n",
        "    diff_signal = input_signal.copy()\n",
        "    for i in range(len(input_signal)):\n",
        "        current_sample = 2*input_signal[i]\n",
        "\n",
        "        if i>=1: current_sample += input_signal[i]\n",
        "        if i>=3: current_sample -= input_signal[i-3]\n",
        "        if i>=4: current_sample -= 2*input_signal[i-4]\n",
        "\n",
        "        diff_signal[i] = current_sample / (8*sampling_freq)\n",
        "    return diff_signal \n",
        "\n",
        "def bandpass_ecg(input_signal, low, high, sampling_freq):\n",
        "    return high_pass_scipy_butterworth(low_pass_scipy_butterworth(input_signal, high, sampling_freq), low, sampling_freq)\n",
        "\n",
        "def time_averaged_ecg(input_signal, sampling_freq):\n",
        "    filtered = bandpass_ecg(input_signal, 5, 11, sampling_freq)\n",
        "    diffed = differentiated_ecg(filtered, sampling_freq)\n",
        "    squared = np.square(diffed)\n",
        "    averaged = avg_ecg(squared, sampling_freq)\n",
        "    return averaged\n",
        "\n",
        "def avg_ecg(input_signal, sampling_freq):\n",
        "    window_size = 32\n",
        "    input_signal = input_signal.copy()\n",
        "    moving_avg =  input_signal.copy()\n",
        "    for index in range(len(input_signal)):\n",
        "        if index < window_size:\n",
        "            continue\n",
        "        else:\n",
        "            moving_avg[index] = np.sum(input_signal[index-(window_size-1): index+1])\n",
        "    moving_avg /= window_size\n",
        "    moving_avg[0: window_size] = 0\n",
        "    return moving_avg\n",
        "\n",
        "def low_pass_scipy_butterworth(input_signal, cutoff_freq, sampling_freq):\n",
        "    sos = signal.butter(2, cutoff_freq/(sampling_freq/2), 'low', output='sos')\n",
        "    filtered_signal = signal.sosfilt(sos, input_signal)\n",
        "    return filtered_signal\n",
        "\n",
        "def high_pass_scipy_butterworth(input_signal, cutoff_freq, sampling_freq):\n",
        "    sos = signal.butter(1, cutoff_freq/(sampling_freq/2), 'high', output='sos')\n",
        "    filtered_signal = signal.sosfilt(sos, input_signal)\n",
        "    return filtered_signal\n"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "toc_visible": true,
      "provenance": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.8"
    },
    "vscode": {
      "interpreter": {
        "hash": "365192fac04382026f06f6052da5e1c5de1719933779a103109965611448e9ab"
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}